home *** CD-ROM | disk | FTP | other *** search
- package netscape.ldap.util;
-
- public final class MimeBase64Encoder extends MimeEncoder {
- private int buf;
- private int buf_bytes;
- private byte[] line = new byte[74];
- private int line_length;
- private static final byte[] crlf = "\r\n".getBytes();
- private static final byte[] map = new byte[]{65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47};
-
- private final void encode_token() {
- int var1 = this.line_length;
- this.line[var1] = map[63 & this.buf >> 18];
- this.line[var1 + 1] = map[63 & this.buf >> 12];
- this.line[var1 + 2] = map[63 & this.buf >> 6];
- this.line[var1 + 3] = map[63 & this.buf];
- this.line_length += 4;
- this.buf = 0;
- this.buf_bytes = 0;
- }
-
- private final void encode_partial_token() {
- int var1 = this.line_length;
- this.line[var1] = map[63 & this.buf >> 18];
- this.line[var1 + 1] = map[63 & this.buf >> 12];
- if (this.buf_bytes == 1) {
- this.line[var1 + 2] = 61;
- } else {
- this.line[var1 + 2] = map[63 & this.buf >> 6];
- }
-
- if (this.buf_bytes <= 2) {
- this.line[var1 + 3] = 61;
- } else {
- this.line[var1 + 3] = map[63 & this.buf];
- }
-
- this.line_length += 4;
- this.buf = 0;
- this.buf_bytes = 0;
- }
-
- private final void flush_line(ByteBuf var1) {
- var1.append(this.line, 0, this.line_length);
- this.line_length = 0;
- }
-
- public final void translate(ByteBuf var1, ByteBuf var2) {
- byte[] var3 = var1.toBytes();
- int var4 = var1.length();
-
- for(int var5 = 0; var5 < var4; ++var5) {
- if (this.buf_bytes == 0) {
- this.buf = this.buf & '\uffff' | var3[var5] << 16;
- } else if (this.buf_bytes == 1) {
- this.buf = this.buf & 16711935 | var3[var5] << 8 & '\uffff';
- } else {
- this.buf = this.buf & 16776960 | var3[var5] & 255;
- }
-
- if (++this.buf_bytes == 3) {
- this.encode_token();
- if (this.line_length >= 72) {
- var2.append(this.line, 0, this.line_length);
- this.line_length = 0;
- }
- }
-
- if (var5 == var4 - 1) {
- if (this.buf_bytes > 0 && this.buf_bytes < 3) {
- this.encode_partial_token();
- }
-
- if (this.line_length > 0) {
- var2.append(this.line, 0, this.line_length);
- this.line_length = 0;
- }
- }
- }
-
- for(int var6 = 0; var6 < this.line.length; ++var6) {
- this.line[var6] = 0;
- }
-
- }
-
- public final void eof(ByteBuf var1) {
- if (this.buf_bytes != 0) {
- this.encode_partial_token();
- }
-
- var1.append(this.line, 0, this.line_length);
- this.line_length = 0;
-
- for(int var2 = 0; var2 < this.line.length; ++var2) {
- this.line[var2] = 0;
- }
-
- }
- }
-